Flash memory (e.g., NAND Flash memory) comprises of grid of cells arranged in a rectangular lattice. A cell is a floating gate and the information is stored as charge in these floating gates. A multi-level-cell (MLC) stores more than one bit per cell. Programming of a cell in NAND Flash is attained by Fowler-Nordhiem tunneling until the ideal programmed voltage is attained. However, due to programming time constraints, some tolerance is accepted and the actual programmed voltage is allowed to be within some range of the ideal value.
The read level is a random variable with some distribution around the mean programming level. Errors occur during reads because of overlaps of the level distributions. If the raw bit error rate (RBER) has to be kept low, the distributions must be narrow. One possible reason why the distributions are broadened is the capacitive coupling between neighboring cells. This phenomenon is called inter-cell-interference (ICI). ICI is caused due to floating-gate to floating-gate coupling, and can be from mild to extreme.